/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.web.managedbeans;

import cl.bussines.ejbs.ComunasFacade;
import cl.bussines.ejbs.SucursalesFacade;
import cl.bussines.entities.Comunas;
import cl.bussines.entities.Sucursales;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.log4j.Logger;

/**
 *
 * @author Vogel
 */
@ManagedBean(name="sucursalMBean")
@SessionScoped
public class SucursalMBean extends BaseMBean{

    private static final String VISTA_LISTAR = "sucursales";
    private static final String VISTA_CREAR = "sucursalesCrear";
    private static final String VISTA_EDITAR = "sucursalesEditar";
    
    private List<Sucursales> sucursales;
    @EJB
    private cl.bussines.ejbs.SucursalesFacade ejbFacade;
    @EJB
    private ComunasFacade comunasEjb;
    private static Logger LOG = Logger.getLogger(SucursalMBean.class);
    private Sucursales sucursal = new Sucursales();  
    private List<Comunas> comunas;
    private boolean check = false;
    private String msgRut;
    private String selectedText;
    private boolean esVisible = false;
    private String msgComuna;
    
    public String init(){
        return VISTA_LISTAR;
    }
  
    public String delete(){
        try{
            int codigo = Integer.parseInt(getParam("codigo"));
            String index = getParam("index");

            LOG.info("Codigo del sucursal a editar ["+codigo+"]");
            LOG.info("Index de la tabla ["+index+"]");
            LOG.info("sucursales size ["+sucursales.size()+"]");
            for(Sucursales suc : sucursales){ 
                if(suc.getIdSucursales()==codigo){
                    LOG.info("Entro a setear la sucursal;");
                    this.sucursal = suc;
                }
            }
            if(sucursal != null && sucursal.getIdSucursales()!=0){
                LOG.info("START::DELETE::");
                ejbFacade.remove(sucursal);
                message(FacesMessage.SEVERITY_INFO,"Ha eliminado correctamente.");
            }
            
            sucursales.clear();
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al eliminar sucursal.");
        }
        return VISTA_LISTAR;
    }
    
    public String volver(){
        return init();
    }
    
    public String irCrear(){
        sucursal = new Sucursales();
        return VISTA_CREAR;
    }
    
    public String irEditar(){
        LOG.info("ID sucursal a editar ["+getParam("codigo")+"]");
        int codigo = Integer.parseInt(getParam("codigo"));
        String index = getParam("index");
        
        LOG.info("Codigo del sucursal a editar ["+codigo+"]");
        LOG.info("Index de la tabla ["+index+"]");
        LOG.info("sucursales size ["+sucursales.size()+"]");
        for(Sucursales suc : sucursales){ 
            if(suc.getIdSucursales()==codigo){
                LOG.info("Entro a setear la sucursal;");
                this.sucursal = suc;
            }
        }
        if(sucursal.getCUTComuna()!=null){
            setSelectedText(sucursal.getCUTComuna().getNomComu());
        }
        LOG.info(sucursal);
        return VISTA_EDITAR;
    }
    
    public String crear(){
        this.msgRut = "";
        this.msgComuna = "";
        try {
            //CAMPOS OBLIGATORIOS
            LOG.info("Comuna seleccionada: "+getSelectedText());
                if(getSelectedText()!=null || "".equals(getSelectedText())){
                    for(Comunas comu : comunas){
                        if(comu.getNomComu().equals(getSelectedText())){
                            LOG.info(comu.getNomComu()+" igual a "+getSelectedText());
                            sucursal.setCUTComuna(comu);
                        }
                    }
                }
            LOG.info("Comuna: "+sucursal.getCUTComuna());
            //SE CREA SUCURSAL
            if(this.msgRut.equals("") && this.msgComuna.equals("")){
                LOG.info("START::CREATE::");
                ejbFacade.create(sucursal);
                message(FacesMessage.SEVERITY_INFO,"Ha sido creado correctamente.");
            }
            
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al crear nuevo sucursal.");
        }
        return VISTA_CREAR;
    }
    
    public String editar(){
        this.msgRut = "";
        this.msgComuna = "";
        try {
            //CAMPOS OBLIGATORIOS
            LOG.info("Comuna seleccionada: "+getSelectedText());
                if(getSelectedText()!=null || "".equals(getSelectedText())){
                    for(Comunas comu : comunas){
                        if(comu.getNomComu().equals(getSelectedText())){
                            LOG.info(comu.getNomComu()+" igual a "+getSelectedText());
                            sucursal.setCUTComuna(comu);
                        }
                    }
                }
            LOG.info("Comuna: "+sucursal.getCUTComuna());
            
            //SE EDITA SUCURSAL
            if(this.msgRut.equals("") && this.msgComuna.equals("")){
                LOG.info("START::EDITAR::");
                ejbFacade.edit(sucursal);
                message(FacesMessage.SEVERITY_INFO,"Sucursal editado correctamente.");
            }
            
        } catch (Exception e) {
            LOG.error(e);
            message(FacesMessage.SEVERITY_ERROR,"Error al editar nuevo sucursal.");
        }
        return VISTA_EDITAR;
    }
    
    public Comunas getComunaAutocompletar(String text){
        Comunas comuna = new Comunas();
        for(Comunas com : getComunas()){
            if(com.getNomComu().equalsIgnoreCase(text)){
                comuna = com;
            }
        }
        return comuna;
    }

    public List<Sucursales> getSucursales() {
         if(sucursales == null || sucursales.isEmpty()){
            sucursales = getEjbFacade().findAll();
        }
        return sucursales;
    }

    public void setSucursales(List<Sucursales> sucursales) {
        this.sucursales = sucursales;
    }

    public SucursalesFacade getEjbFacade() {
        return ejbFacade;
    }

    public void setEjbFacade(SucursalesFacade ejbFacade) {
        this.ejbFacade = ejbFacade;
    }
    
    public boolean isCheck() {
        return check;
    }

    public void setCheck(boolean check) {
        this.check = check;
    }

    public String getMsgRut() {
        return msgRut;
    }

    public void setMsgRut(String msgRut) {
        this.msgRut = msgRut;
    }

    public List<Comunas> getComunas() {
        if(comunas == null || comunas.isEmpty()){
            comunas = getComunasEjb().findAll();
        }    
        return comunas;
    }

    public void setComunas(List<Comunas> comunas) {
        this.comunas = comunas;
    }

    public ComunasFacade getComunasEjb() {
        return comunasEjb;
    }

    public void setComunasEjb(ComunasFacade comunasEjb) {
        this.comunasEjb = comunasEjb;
    }

    public String getSelectedText() {
        return selectedText;
    }

    public void setSelectedText(String selectedText) {
        this.selectedText = selectedText;
    }

    public boolean isEsVisible() {
        return esVisible;
    }

    public void setEsVisible(boolean esVisible) {
        this.esVisible = esVisible;
    }

    public String getMsgComuna() {
        return msgComuna;
    }

    public void setMsgComuna(String msgComuna) {
        this.msgComuna = msgComuna;
    }

    public Sucursales getSucursal() {
        return sucursal;
    }

    public void setSucursal(Sucursales sucursal) {
        this.sucursal = sucursal;
    }
    
    
}
